// phalanx type_traits.hpp.cu header file

// Copyright (c) 2010 - 2011 Kohei Takahashi (Flast).
// Distributed under the MIT license. for more detail see COPYING.

// Redefinition C++0x STL type traits
//              Boost.Type Traits

#ifndef IG_PHALANX_TYPE_TRAITS_HPP_CU_ONCE_
#define IG_PHALANX_TYPE_TRAITS_HPP_CU_ONCE_

#include <phalanx/config.hpp.cu>

#include <phalanx/type_traits/add_const.hpp.cu>
#include <phalanx/type_traits/add_cv.hpp.cu>
#include <phalanx/type_traits/add_lvalue_reference.hpp.cu>
#include <phalanx/type_traits/add_pointer.hpp.cu>
#include <phalanx/type_traits/add_reference.hpp.cu>
#include <phalanx/type_traits/add_rvalue_reference.hpp.cu>
#include <phalanx/type_traits/add_volatile.hpp.cu>
//#include <phalanx/type_traits/add_move_reference.hpp.cu>

#include <phalanx/type_traits/common_type.hpp.cu>
#include <phalanx/type_traits/conditional.hpp.cu>
#include <phalanx/type_traits/decay.hpp.cu>
#include <phalanx/type_traits/extent.hpp.cu>

#if PHALANX_CUDA_ARCH_MAJOR_VERSION >= 2
# include <phalanx/type_traits/is_abstract.hpp.cu>
# include <phalanx/type_traits/is_virtual_base_of.hpp.cu>
#endif
#include <phalanx/type_traits/is_arithmetic.hpp.cu>
#include <phalanx/type_traits/is_array.hpp.cu>
#include <phalanx/type_traits/is_base_and_derived.hpp.cu>
#include <phalanx/type_traits/is_base_of.hpp.cu>
#include <phalanx/type_traits/is_class.hpp.cu>
#include <phalanx/type_traits/is_complex.hpp.cu>
#include <phalanx/type_traits/is_compound.hpp.cu>
#include <phalanx/type_traits/is_const.hpp.cu>
#include <phalanx/type_traits/is_convertible.hpp.cu>
#include <phalanx/type_traits/is_empty.hpp.cu>
#include <phalanx/type_traits/is_enum.hpp.cu>
#include <phalanx/type_traits/is_float.hpp.cu>
#include <phalanx/type_traits/is_floating_point.hpp.cu>
#include <phalanx/type_traits/is_function.hpp.cu>
#include <phalanx/type_traits/is_fundamental.hpp.cu>
#include <phalanx/type_traits/is_integral.hpp.cu>
#include <phalanx/type_traits/is_lvalue_reference.hpp.cu>
#include <phalanx/type_traits/is_member_function_pointer.hpp.cu>
#include <phalanx/type_traits/is_member_object_pointer.hpp.cu>
#include <phalanx/type_traits/is_member_pointer.hpp.cu>
#include <phalanx/type_traits/is_object.hpp.cu>
#include <phalanx/type_traits/is_pod.hpp.cu>
#include <phalanx/type_traits/is_polymorphic.hpp.cu>
#include <phalanx/type_traits/is_pointer.hpp.cu>
#include <phalanx/type_traits/is_reference.hpp.cu>
#include <phalanx/type_traits/is_rvalue_reference.hpp.cu>
#include <phalanx/type_traits/is_signed.hpp.cu>
#include <phalanx/type_traits/is_same.hpp.cu>
#include <phalanx/type_traits/is_scalar.hpp.cu>
#include <phalanx/type_traits/is_stateless.hpp.cu>
#include <phalanx/type_traits/is_union.hpp.cu>
#include <phalanx/type_traits/is_unsigned.hpp.cu>
#include <phalanx/type_traits/is_void.hpp.cu>
#include <phalanx/type_traits/is_volatile.hpp.cu>
//#include <phalanx/type_traits/is_movable.hpp.cu>
//#include <phalanx/type_traits/is_move_reference.hpp.cu>
#include <phalanx/type_traits/is_builtin_vector.hpp.cu>

#include <phalanx/type_traits/make_unsigned.hpp.cu>
#include <phalanx/type_traits/make_signed.hpp.cu>

#include <phalanx/type_traits/remove_bounds.hpp.cu>
#include <phalanx/type_traits/remove_extent.hpp.cu>
#include <phalanx/type_traits/remove_all_extents.hpp.cu>
#include <phalanx/type_traits/remove_const.hpp.cu>
#include <phalanx/type_traits/remove_cv.hpp.cu>
#include <phalanx/type_traits/remove_pointer.hpp.cu>
#include <phalanx/type_traits/remove_reference.hpp.cu>
#include <phalanx/type_traits/remove_volatile.hpp.cu>
//#include <phalanx/type_traits/remove_move_reference.hpp.cu>

#include <phalanx/type_traits/integral_constant.hpp.cu>

#endif // IG_PHALANX_TYPE_TRAITS_HPP_CU_ONCE_

